const defaultDataEvent = {
  title: '触发动作设置', // 标题
  formType: 1, // 表单类型 1-在线开发普通表单 2-在线开发流程表单 3-数据接口
  formId: '', // 触发表单/接口id
  formName: '', // 触发表单/接口名称
  formFieldList: [], // 表单/接口字段
  interfaceTemplateJson: [], // 接口参数
  triggerEvent: 1, // 触发事件 1-新增 2-修改 3-删除
  ruleList: [], // 触发条件规则
  ruleMatchLogic: 'and', // 触发条件规则匹配逻辑
  msgUserType: [1], // 通知人类型
  msgUserIds: [], // 通知人,

  // 执行失败通知
  failMsgConfig: {
    on: 3,
    msgId: '',
    msgName: '',
    templateJson: [],
  },
  // 开始执行通知
  startMsgConfig: {
    on: 3,
    msgId: '',
    msgName: '',

    templateJson: [],
  },
  // 定时触发
  startTime: null, // 触发开始时间
  cron: '', // cron表达式
  endTimeType: 1, // 触发结束时间类型
  endLimit: 1, // 触发次数
  endTime: null, // 触发指定事件
  webhookUrl: '', // webhookUrl
  webhookGetFieldsUrl: '', // webhook获取接口字段Url
  webhookRandomStr: '', // webhook获取接口字段识别码
};


const defaultStartForm = {
  initiator: [],
  title: '流程发起',
  errorRule: 1, // 异常处理规则
  errorRuleUser: [], // 指定人员处理异常
  resurgenceDataRule: 0, // 复活取值规则
  funcConfigRule: 0,
  // 限时设置
  timeLimitConfig: {
    on: 0,  // 开启
    nodeLimit: 0, // 节点限定时长起始值类型
    duringDeal: 24, // 节点处理限定时长(时)
    formField: '',  // 请选择字段
  },
  overTimeConfig: {
    on: 0, // 开启
    firstOver: 0, // 第一次超时时间(时)
    overTimeDuring: 2, // 超时间隔(时)
    overNotice: true, // 超时事务-超时通知
    overAutoApprove: false, // 超时事务-超时自动审批
    overAutoApproveTime: 5, // 自动审批超时次数(次)
    overEvent: false, // 超时事件
    overEventTime: 5, // 超时事件超时次数(次)
  },
  noticeConfig: {
    on: 0, // 开启
    firstOver: 1, // 第一次提醒时间(时)
    overTimeDuring: 2, // 提醒间隔(时)
    overNotice: true, // 提醒事务-提醒通知
    overEvent: false, // 提醒事件
    overEventTime: 5, // 提醒次数(次)
  },
  // 流程事件
  overTimeFuncConfig: {
    on: false,     // 开启
    interfaceId: '', // 接口id
    interfaceName: '', // 接口名称
    templateJson: [] // 模块json
  },
  noticeFuncConfig: {
    on: false,     // 开启
    interfaceId: '', // 接口id
    interfaceName: '', // 接口名称
    templateJson: [] // 模块json
  },
  initFuncConfig: {
    on: false,
    asyncEvent: false,
    interfaceId: '',
    interfaceName: '',
    templateJson: []
  },
  endFuncConfig: {
    on: false,
    asyncEvent: false,
    interfaceId: '',
    interfaceName: '',
    templateJson: []
  },
  cancelFuncConfig: {
    on: false,
    asyncEvent: false,
    interfaceId: '',
    interfaceName: '',
    templateJson: []
  },
  flowRecallFuncConfig: {
    on: false,
    asyncEvent: false,
    interfaceId: '',
    interfaceName: '',
    templateJson: []
  },
  baseFuncConfig: {
    on: false,
    asyncEvent: false,
    interfaceId: '',
    eventCodes: [],
    interfaceName: '',
    templateJson: []
  },
  waitMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  endMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  approveMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  rejectMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  copyMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  overTimeMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  noticeMsgConfig: {
    asyncEvent: false,
    on: 3,
    msgId: '',
    msgName: '',
    notifyUsers:[],
    templateJson: []
  },
  commentMsgConfig: {
    on: 3,
    msgId: '',
    msgName: '',
    templateJson: [],
  },
  isShowDelComment: true,
  hasSubmitBtn: true,
  submitBtnText: '提 交',
  hasSaveBtn: true,
  saveBtnText: '暂 存',
  hasShareBtn: true,
  shareBtnText: '分 享',
  hasPressBtn: true,
  pressBtnText: '催 办',
  hasRestartBtn: true,
  restartBtnText: '复 活',
  hasRevokeBtn: true,
  revokeBtnText: '撤 回',
  hasPrintBtn: false,
  printBtnText: '打 印',
  printId: '',
  isComment: true,
  isBatchApproval: false,
  isSummary: true,
  summaryType: 0,
  titleType: 0,
  defaultContent: '{发起用户名}的{流程名称}',
  titleContent: '',
  formOperates: [],
  circulateUser: [],
  isCustomCopy: false,
  isFormFieldCopy: false,
  copyFormFieldType: 1,
  copyFormField: '',
  extraCopyRule: 1,
  hasSign: true,
  hasOpinion: true,
  formId: "",
  formName: "",
  allFormMap: {},
  revokeRule: 2,
  revokeDataRule: 2,
  paramsConfig: [],
}

const defaultMessageForm = {
  title: '触发动作设置', // 标题
  formType: 1, // 表单类型 1-在线开发普通表单 2-在线开发流程表单 3-数据接口
  formId: '', // 触发表单/接口id
  formName: '', // 触发表单/接口名称
  formFieldList: [], // 表单/接口字段
  interfaceTemplateJson: [], // 接口参数
  triggerEvent: 1, // 触发事件 1-新增 2-修改 3-删除
  ruleList: [], // 触发条件规则
  ruleMatchLogic: 'and', // 触发条件规则匹配逻辑
  msgUserType: [1], // 通知人类型
  msgUserIds: [], // 通知人,

  // 执行失败通知
  failMsgConfig: {
    on: 3,
    msgId: '',
    msgName: '',
    templateJson: [],
  },
  // 开始执行通知
  startMsgConfig: {
    on: 3,
    msgId: '',
    msgName: '',
    templateJson: [],
  },
  // 定时触发
  startTime: null, // 触发开始时间
  cron: '', // cron表达式
  endTimeType: 1, // 触发结束时间类型
  endLimit: 1, // 触发次数
  endTime: null, // 触发指定事件
  webhookUrl: '', // webhookUrl
  webhookGetFieldsUrl: '', // webhook获取接口字段Url
  webhookRandomStr: '', // webhook获取接口字段识别码
};

export default {
  defaultDataEvent,
  defaultStartForm,
  defaultMessageForm,
  start: {
    type: "start",
    content: "所有人",
    properties: defaultStartForm
  },
  approver: {
    type: "approver",
    content: "请设置审批人",
    properties: {
      title: '审批节点'
    }
  },
  copy: {
    type: 'copy',
    content: '请设置抄送人',
    properties: {
      title: '抄送人',
      members: [],
      userOptional: true,
      circulateUser: [],
      extraCopyRule: 1
    }
  },

  sb: {
    type: 'sb',
    content: '空节点',
    properties: {
      title: '空节点',
      members: [],
      userOptional: true,
      circulateUser: [],
      extraCopyRule: 1
    }
  },


  timer: {
    type: 'timer',
    content: '请设置时间',
    properties: {
      title: '定时器',
      day: 0,
      hour: 0,
      minute: 0,
      second: 0,
      dayField: '',
      dayFieldFlag: false,
      hourField: '',
      hourFieldFlag: false,
      minuteField: '',
      minuteFieldFlag: false,
      secondField: '',
      secondFieldFlag: false,
      timeModeFlag:true,

      pointDateFlag: false,
      pointDate:'',
      pointDateField: '',
      conditions: [],
      initiator: null,
      pointDateMode: '',
      pointTimePicker:'',
      pointDays:1,
    }
  },
  subFlow: {
    type: 'subFlow',
    content: '请设置发起人',
    properties: {
      title: '子流程'
    }
  },
  interflow: {
    type: "approver",
    content: "请设置审批人",
    isInterflow: true,
    properties: {
      title: '审批节点'
    }
  },
  branchFlow: {
    type: "approver",
    content: "请设置审批人",
    isBranchFlow: true,
    properties: {
      title: '审批节点'
    }
  },
  condition: {
    type: "condition",
    content: "请设置条件",
    properties: {
      title: '条件',
      matchLogic: 'and',
      conditions: [],
      initiator: null,
      conditionType: 0, // 条件类型 0-默认 1-转向
      swerveNode: '',
      swerveLabel: '',
      plusFlag: false,
      modeFlag: 1,
      isCustomLogical: false, // 是否开启自定义关系
      customLogical: [], // 自定义关系逻辑运算
      conditionFuncConfig: {
        on: false,
        interfaceId: '',
        interfaceName: '',
        templateJson: []
      },
    }
  },
  branch: {
    type: "branch",
    content: "",
    properties: {}
  },
  empty: {
    type: "empty",
    content: "",
    properties: {}
  },
  mail: {
    type: 'mail',
    content: '请设置邮件信息',
    properties: {
      title: '邮件信息节点',
      to: [], //收件人集合
      from: "",//发件人()
      subject: "", //主题
      cc: [],//抄送人
      bcc: [],//密送人
      html: "",//抄送内容
      fileList: [] //文件列表
    }
  },
  serviceTask: {
    type: 'serviceTask',
    content: '请设置Java类',
    properties: {
      title: '业务编排节点',
      serviceClassName: "" //调用的Java类,
    }
  },
  jumpTask: {
    type: 'jumpTask',
    content: '请设置跳转节点',
    properties: {
      title: '跳转节点',
      jumpTaskNode: '',
      nodeOptions: [],
      matchLogic: 'and',
      conditions: [],
      initiator: null,
      conditionType: 0, // 条件类型 0-默认 1-转向
      plusFlag: false,
      modeFlag: 1,
      isCustomLogical: false, // 是否开启自定义关系
      customLogical: [], // 自定义关系逻辑运算
      conditionFuncConfig: {
        on: false,
        interfaceId: '',
        interfaceName: '',
        templateJson: []
      },


    }
  },
  jumpExTask: {
    type: 'jumpExTask',
    content: '连线节点',
    properties: {
      title: '连线节点',
      jumpTaskNode: '',
      nodeOptions: [],
      matchLogic: 'and',
      conditions: [],
      initiator: null,
      conditionType: 0, // 条件类型 0-默认 1-转向
      plusFlag: false,
      modeFlag: 1,
      isCustomLogical: false, // 是否开启自定义关系
      customLogical: [], // 自定义关系逻辑运算
      conditionFuncConfig: {
        on: false,
        interfaceId: '',
        interfaceName: '',
        templateJson: []
      },
    }
  },


  httpTask: {
    type: 'httpTask',
    content: '请设置Http信息',
    properties: {
      title: '请求编排节点',
      requestMethodCode: 0,  //调用的Java类
      requestURL: "", //请求URL
      requestBody: "", //请求体
      requestHeaders: "",//请求头
      requestConnectionTimeOut: 10000, //请求超时时间
      httpInterfaceId: '', // 接口id
      httpInterfaceName: '', // 接口名称
      templateJson: [], // 模块json
      httpInitFuncConfig: {
        on: false,
        interfaceId: '',
        interfaceName: '',
        templateJson: []
      },
    }
  },
  sqlTask: {
    type: 'sqlTask',
    content: '请选择SQL编排信息',
    properties: {
      title: 'SQL编排节点',
      sqlInitFuncConfig: {
        on: true,
        interfaceId: '',
        interfaceName: '',
        templateJson: []
      },
    }
  },


  scriptTask: {
    type: 'scriptTask',
    content: '请设置脚本信息',
    properties: {
      title: '脚本编排节点',
      scriptFormat: 1, //脚本类型
      scriptContent: "" //脚本内容
    }
  },
  shellTask: {
    type: 'shellTask',
    content: '请设置shell信息',
    properties: {
      title: '运维编排节点',
      command: "", //shell脚本内容
      waitShellFlag: true, //是否等待shell脚本执行完成
      shellDirectory: "" //脚本在哪个目录执行
    }
  },
  //站内信节点
  zhan: {
    type: 'zhan',
    content: '请设置站内信信息',
    properties: {
      title: '站内信节点',
      to: [], //发送给哪些人
      notifyContent: "", //站内信信息
      processFlag: false //是否需要将流程信息发送给这些人
    }
  },

  ding: {
    type: 'ding',
    content: '请设置钉钉信息',
    properties: {
      title: '钉钉节点',
      to: [], //发送给哪些人
      notifyContent: "", //站内信信息
      processFlag: false //是否需要将流程信息发送给这些人
    }
  },

  wx: {
    type: 'wx',
    content: '请设置微信信息',
    properties: {
      title: '微信节点',
      to: [], //发送给哪些人
      notifyContent: "", //站内信信息
      processFlag: false //是否需要将流程信息发送给这些人
    }
  },

  dx: {
    type: 'dx',
    content: '请设置短信信息',
    properties: {
      title: '短信节点',
      to: [], //发送给哪些人
      notifyContent: "", //站内信信息
      processFlag: false //是否需要将流程信息发送给这些人
    }
  },

  // 消息通知节点
  message: {
    type: 'message',
    content: '请设置消息通知',
    properties: {
      title: '消息通知',
      msgUserIds: [], // 通知人
      msgId: '',
      msgName: '',
      templateJson: [],
      messageMsgConfig: {
        asyncEvent: false,
        on: 3,
        msgId: '',
        msgName: '',
        templateJson: []
      },
    },
  },
  addData: {
    type: 'addData',
    content: '请设置新增数据',
    properties: {
      title: '新增数据',
      flowId: '', // 流程id
      formId: '', // 表单id
      formName: '', // 表单名称
      formFieldList: [], // 表单字段
      transferList: [], // 字段设置
      ruleMatchLogic: 'and',//分组匹配逻辑
      ruleList: [], // 新增条件规则/唯一性验证
      addRule: 0, // 数据存在时 0-不新增数据 1-不新增数据
    },
  },
  // 更新数据节点
  updateData: {
    type: 'updateData',
    content: '请设置更新数据',
    properties: {
      title: '更新数据',
      formId: '', // 表单id
      formName: '', // 表单名称
      formFieldList: [], // 表单字段
      transferList: [], // 更新字段
      ruleList: [], // 更新条件规则/唯一性验证
      ruleMatchLogic: 'and',//分组匹配逻辑
      unFoundRule: 0, // 未找到数据时 0-不更新 1-新增
    },
  },

}
